home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Latest Shareware Programs: Warp
/
OS-2 WARP - Latest Shareware Programs.iso
/
zipped.os2
/
treiber.1
/
dvi15f-1.arj
/
MAKEDOT.DOC
< prev
next >
Wrap
Text File
|
1994-09-01
|
36KB
|
1,239 lines
==============================================================================
MAKEDOT.DOC (makedot 1.2d) VERSION: 01-Sep-1994
==============================================================================
Table of Contents
=================
1 Introduction
2 Usage
2.1 Converting a text file into a parameter file
2.2 Converting a parameter file into a text file
2.3 Converting between different DOT file formats
2.4 Converting a text file into a binary file
2.5 Converting a binary file into a text file
3 Text file format for generating a parameter file
3.1 Keywords
3.1.1 Keywords for all parameter file types
3.1.2 Keywords for TYPE=DOT
3.1.3 Keywords for TYPE=DOT_HORZ
3.1.4 Keywords for TYPE=BITMAP
3.2 Code sequences
3.3 Examples of code sequences
4 Text file format for creating a binary file
4.1 Code sequences
5 Notes
6 Appendix: Old method for inserting parameters in a code sequence
7 History
1 Introduction
==============
The makedot program is used to generate parameter files for dvidot.
It has two functions:
- conversion of a text file into a parameter file (DOT file)
- conversion of a parameter file (DOT file) into a text file
To modify parameter files they must first be converted into a text
file which can then be changed with an editor. The modified text file
can then be converted back into a parameter file again.
makedot can also be used for creating binary files as required for the
+init-files option of dvihplj and dvidot.
2 Usage
=======
2.1 Converting a text file into a parameter file
------------------------------------------------
The command
makedot -c [<options>] <input_file> [<output_file>]
converts the text file <input_file> into the DOT file <output_file>.
The default extension for the output file is DOT. If no output file
name is given, the name of the input file (with the extension DOT) is
used. If you specify `-' for the input file, the text file is read
from standard input.
2.2 Converting a parameter file into a text file
------------------------------------------------
The command
makedot -d [<options>] <input_file> [<output_file>]
converts the DOT file <input_file> into the text file <output_file>.
The default extension for the input file is DOT. If no output file
name is given then the input file name (without the extension DOT)
is used. If you specify `-' for the output file, the text file is
written to standard output.
2.3 Converting between different DOT file formats
-------------------------------------------------
dvidot 1.4n and later cannot use old DOT files. These files must be
converted by makedot. The command
makedot -r [<options>] <input_file> [<output_file>]
converts the DOT file <input_file> into the DOT file <output_file>.
If no output file is specified, the input file will be overwritten by
the converted file.
If `-o' is given, an output file compatible with older versions of
makedot will be created -- unless it cannot be converted due to usage
of new features. To convert a DOT file to the old format, use
makedot -ro <input file> [<output file>]
If `-q' is given, makedot doesn't display its logo line.
2.4 Converting a text file into a binary file
---------------------------------------------
The command
makedot -b [<options>] <input_file> <output_file>
converts the text file <input_file> into the binary file
<output_file>. If you specify `-' for the input file, the text file
is read from standard input.
2.5 Converting a binary file into a text file
---------------------------------------------
The command
makedot -a [<options>] <input_file> <output_file>
converts the binary file <input_file> into the text file
<output_file>. If you specify `-' for the output file, the text file
is written to standard output.
If `-q' is given, makedot doesn't display its logo line.
3 Text file format for generating a parameter file
==================================================
A text file can contain comment lines which begin with `*' or `%', all
the characters after that character are ignored. Blank lines are also
ignored.
All other lines contain a keyword followed by an equals sign.
Parameters for this keyword follow the equals sign. (There are
keywords which don't require parameters.)
3.1 Keywords
------------
All keywords given below (but those shown in square brackets) must
be used, the order doesn't matter. Optional parts of a line are
enclosed in square brackets, alternatives are enclosed in parentheses
and separated by a vertical bar. The different kinds of argument are
abbreviated as follows:
<d> dimension: number and TeX unit (px may be used as well)
<e> <expression>
<n> number
<s> code sequence
<t> text
These argument types are explained below. Depending on the setting of
TYPE=, different keywords can be used.
3.1.1 Keywords for all parameter file types
-------------------------------------------
The following keywords can be used for both types of parameter files.
[COMMENT=[<t>]]
Comment: it is saved in the parameter file but ignored.
ENV_NAME=<t>
Name of an environment variable, from which dvidot should take op-
tions.
FONT_PATH=<t>
Path for font files. This is the default setting for the
+font-files option.
LOG_NAME=<t>
Name of the transcript file.
PAGE_HEIGHT=<d>
Page height. Default setting for +height.
PAGE_WIDTH=<d>
Page width. Default setting for +width.
RESOLUTION=<n1> <n2>
Resolution. <n1> is the default for +resolution-x, <n2> is the de-
fault for +resolution-y.
[TYPE=[(DOT | DOT_HORZ | BITMAP)]]
Type of the parameter file. With TYPE=DOT and TYPE=DOT_HORZ, a
parameter file for driving a dot-matrix printer will be created,
with TYPE=BITMAP a parameter file for creating graphics files will
be created. If TYPE= without an argument is used or if TYPE= is
omitted, TYPE=DOT will be assumed.
[VF_PATH=<t>]
Path for VF files. This is the default setting for the
+virtual-fonts option and should be left empty.
3.1.2 Keywords for TYPE=DOT
---------------------------
TYPE=DOT is used for printers where the pins are arranged vertically
and each byte of graphics data defines a column of dots. Most dot
impact printers are of this type. The following keywords can be used
only in parameter files containing TYPE=DOT.
BLANK_WIDTH=[<n>]
Width of a space character. Space characters are used at the left
margin to move the print head to the right. For this reason, the
width of a space character is required in graphics mode dots. If
spaces should not be used for this movement, then the argument
must be left empty.
COLUMNS=<n>
Maximum number of horizontal dots in graphics mode. This value is
an upper bound for +width.
DOUBLE_SIDED_LONG=[<s>]
The code sequence for initializing the printer for
+double-sided:long.
DOUBLE_SIDED_SHORT=[<s>]
The code sequence for initializing the printer for
+double-sided:short.
EXIT=[<s>]
This sets the code sequence which is sent to the printer at the
end of the job.
FF_METHOD=(FF | LF)
Page throw method: either a FORM_FEED sequence or multiple line
feeds (see FORM_LENGTH).
FORM_FEED=[<s>]
The code sequence required for a page throw. It is necessary for
FF_METHOD=FF. The amount of feed (vertical motion units, or dots
for VMU=1) is available in the `form_feed' variable.
FORM_LENGTH=[<d>]
Form length. Default setting for +form-length. Needed only for
FF_METHOD=LF. If not given, dvidot will use the value set for the
page height as the form length.
GRAPH_END=[<s>]
This is the code sequence which is sent to the printer immediately
after the graphics data -- normally empty.
GRAPH_MODE=[<s>]
This sets the code sequence which selects the desired graphics
mode. The number of dots per line is available in the `pixels'
variable.
INIT1=[<s>]
The printer initialization sequence which is output when the
+slow:off option (which is the default) is selected.
INIT2=[<s>]
The printer initialization sequence which is output when the
+slow:on option is selected.
LINE_FEED=[<s>]
The code sequence which causes a line feed. Also used with
FF_METHOD=LF. The amount of feed (vertical motion units, or dots
for VMU=1) is available in the `line_feed' variable. LINE_FEED
won't be used (except for throwing the page if FF_METHOD=LF is
set) if a POS_Y sequence is given.
MAX_LF=<n>
This is the largest line feed which can be performed by a code
sequence expressed in graphics mode dots -- see LINE_FEED.
Greater line feeds are performed by using multiple smaller line
feeds.
MAX_WIDTH=[<n1> [<n2>]]
If the page width, converted to graphics mode dots, is set to one
of these values, it is reduced by 1 (dot), so that the printer
does not execute an automatic line feed when it reaches the
right-hand margin. This will leave a blank dot at the right
margin.
METHOD=<n1> <n2>
Printing method. The number <n1> is the number of bytes that must
be sent to the printer to print a column of dots in the selected
graphics mode (1 to 8). <n2> is the number of passes per line
(separated by the smallest line spacing). If, for instance, the
pin spacing is 1/72 inch and the printer can move the paper in
1/216 inch steps reasonably reliably, then <n2> can be set to 3.
In this way this example can attain a vertical resolution of 216
DPI. Values from 1 to 6 can be used.
ONE_LINE_FEED=[<n>]
This value is used by INIT1 and INIT2 to program the printer's
line spacing. If LINE_FEED (see below) is used to reprogram the
line spacing, then the argument to ONE_LINE_FEED must be empty.
The printer must perform a line feed of <n> dots when it receives
a LF character.
PINS=<n1> <n2>
The bit numbers of the print head pins: <n1> is the bit number
corresponding to the top pin and <n2> is the bit number
corresponding to the bottom pin (most printers are set to PINS=0 7
or PINS=7 0). Values from 0 to 7 can be entered.
POS_X=[<s>]
The code sequence which positions the print head horizontally.
The horizontal position required in graphics mode dots is
available in the `pos_x' variable.
POS_Y=[<s>]}
The code sequence which positions the print head to an absolute
vertical position. The vertical position required in graphics
mode dots is available in the `pos_y' variable. If a POS_Y
sequence is given, LINE_FEED is not used (except for throwing the
page if FF_METHOD=LF is set).
S_OPTION=(OFF | SLOW | DOUBLE_STRIKE)
This sets the meaning of the +slow option. When set to OFF there
is no +slow option. If set to SLOW, +slow:on selects INIT2 rather
than INIT1. If set to DOUBLE_STRIKE, the +slow:on option selects
INIT2 instead of INIT1 as well as making two passes over each out-
put line. In the first pass dots 1, 3, 5, ... are printed and in
the second pass dots 2, 4, 6, ... This is intended for printers
(like the FX-80) which cannot print two consecutive dots with the
same needle.
[VMU=<n>]
Vertical motion unit. This is the number of graphics dots per
line feed unit. For instance, if the printer can print at 360
DPI vertically, but only can feed the paper in 1/180" units, set
VMU=2. If VMU is not set or set to 0, VMU=1 is assumed. VMU=1
means that vertical motion is expressed in graphics dots.
3.1.3 Keywords for TYPE=DOT_HORZ
--------------------------------
TYPE=DOT_HORZ is used for printers where each byte of graphics data
defines 8 successive horizontally arranged dots. Some ink jet
printers are of this type. The following keywords can be used only in
parameter files containing TYPE=DOT_HORZ.
BITS=<n1> <n2>
Bit ordering within a byte of graphics data. Bit <n1> is at
the left hand side, bit <n2> is at the right hand side. Only
`BITS=7 0' or `BITS=0 7' can be used.
COLUMNS=<n>
Maximum number of horizontal dots in graphics mode. This value is
an upper bound for +width.
DOUBLE_SIDED_LONG=[<s>]
The code sequence for initializing the printer for
+double-sided:long.
DOUBLE_SIDED_SHORT=[<s>]
The code sequence for initializing the printer for
+double-sided:short.
EXIT=[<s>]
This sets the code sequence which is sent to the printer at the
end of the job.
FF_METHOD=(FF | LF)
Page throw method: either a FORM_FEED sequence or multiple line
feeds (see FORM_LENGTH).
FIRST_BYTE=(TOP | BOTTOM) (LEFT | RIGHT)
This declaration defines which corner of the image relates to the
first byte of the first row to be printed. TOP prints the top row
first, BOTTOM prints the bottom row first. LEFT prints the left
column of each row first, RIGHT prints the right column of each
row first. The following settings are used most often:
FIRST_BYTE=TOP LEFT
FORM_FEED=[<s>]
The code sequence required for a page throw. It is necessary for
FF_METHOD=FF. The amount of feed (vertical motion units, or dots
for VMU=1) is available in the `form_feed' variable.
FORM_LENGTH=[<d>]
Form length. Default setting for +form-length. Needed only for
FF_METHOD=LF. If not given, dvidot will use the value set for the
page height as the form length.
INIT1=[<s>]
The printer initialization sequence which is output when the
+slow:off option (which is the default) is selected.
INIT2=[<s>]
The printer initialization sequence which is output when the
+slow:on option is selected.
LINE_FEED=[<s>]
The code sequence which causes a line feed. Also used with
FF_METHOD=LF. The amount of feed (vertical motion units, or dots
for VMU=1) is available in the `line_feed' variable. LINE_FEED
won't be used (except for throwing the page if FF_METHOD=LF is
set) if a POS_Y sequence is given.
MAX_LF=<n>
This is the largest line feed which can be performed by a code
sequence expressed in graphics mode dots -- see LINE_FEED.
Greater line feeds are performed by using multiple smaller line
feeds.
MAX_WIDTH=[<n1> [<n2>]]
If the page width, converted to graphics mode dots, is set to one
of these values, it is reduced by 1 (dot), so that the printer
does not execute an automatic line feed when it reaches the
right-hand margin. This will leave a blank dot at the right
margin.
ONE_LINE_FEED=[<n>]
This value is used by INIT1 and INIT2 to program the printer's
line spacing. If LINE_FEED (see below) is used to reprogram the
line spacing, then the argument to ONE_LINE_FEED must be empty.
The printer must perform a line feed of <n> dots when it receives
a LF character.
POS_X=[<s>]
The code sequence which positions the print head horizontally.
The horizontal position required in graphics mode dots is
available in the `pos_x' variable.
[POS_Y=[<s>]]
The code sequence which positions the print head to an absolute
vertical position. The vertical position required in graphics
mode dots is available in the `pos_y' variable. If a POS_Y
sequence is given, LINE_FEED is not used (except for throwing the
page if FF_METHOD=LF is set).
ROW_BEGIN=[<s>]
This code sequence is written at the beginning of each row of
data. Graphics data will follow immediately. The width of the
row (pixels) is available in the `pixels' variable.
ROW_END=[<s>]
This code sequence is written immediately after each row of data.
The horizontal position may or may not be changed by ROW_END. It
is assumed that ROW_END moves the cursor to the next row.
S_OPTION=(OFF | SLOW)
This sets the meaning of the +slow option. When set to OFF there
is no +slow option. If set to SLOW, +slow:on selects INIT2 rather
than INIT1.
[VMU=<n>]
Vertical motion unit. This is the number of graphics dots per
line feed unit. For instance, if the printer can print at 360
DPI vertically, but only can feed the paper in 1/180" units, set
VMU=2. If VMU is not set or set to 0, VMU=1 is assumed. VMU=1
means that vertical motion is expressed in graphics dots.
3.1.4 Keywords for TYPE=BITMAP
------------------------------
The following keywords can be used only in parameter files containing
TYPE=BITMAP.
ALIGN_WIDTH=<n>
The width of the bitmap will be rounded to an integral multiple of
<n> bytes. <n> can take the values 1, 2 and 4.
BITS=<n1> <n2>
Bit ordering within a byte of graphics data. Bit <n1> is at
the left hand side, bit <n2> is at the right hand side. Only
`BITS=7 0' or `BITS=0 7' can be used.
CHECKSUM=<n1> <n2> <t> <n4> <e>
Method for computing the value of the `checksum' variable for
insertion in the HEADER code sequence. First, `checksum' is set
to <n4>. Then, a loop will be performed over the HEADER sequence
starting at byte position <n1>, performing <n2> iterations:
depending on <t>, 1, 2 or 4 bytes will be fetched from the header
and assigned to the `value' variable; the expression <e> will be
evaluated and the result will be assigned to the `checksum' vari-
able; the position within the header is advanced by 1, 2 or 4,
depending on <t>. The value of the `checksum' variable after <n2>
iterations will be the value inserted for `checksum' into the
header code sequence. For this computation, 0 will be inserted
for the `checksum' and `file_size' variables in the header
code sequence. If you need to include these variables in the
computation of the checksum, you can try to do so when inserting
the checksum into the header.
You can use the following keywords for <t>:
BYTE 8 bits
WORD_LH
16 bits, least significant byte first
WORD_HL
16 bits, most significant byte first
LONG_LH
32 bits, least significant byte first
LONG_HL
32 bits, most significant byte first
Example:
CHECKSUM=0 16 WORD_LH 0 (checksum^value)
The checksum is computed as 16-bit XOR over the first 32 bytes.
If no checksum is required, you can use
CHECKSUM=0 0 BYTE 0 0
COMPRESS=(NO | MSP | PCX)
Type of compression for the graphics data. COMPRESS=NO doesn't
compress at all, the graphics data will be copied unmodified into
the output file. COMPRESS=MSP uses a compression method as used
in MSP files, COMPRESS=PCX uses a RLE type compression method as
used in PCX files.
FIRST_BYTE=(TOP | BOTTOM) (LEFT | RIGHT)
This declaration defines which corner of the image relates to the
first byte of the graphics data. TOP puts the top row first,
BOTTOM puts the bottom row first. LEFT puts the left column of
each row first, RIGHT puts the right column of each row first.
The following settings are used most often:
FIRST_BYTE=TOP LEFT
HEADER=[<s>]
The header of the graphics file. This code sequence will be put
at the start of the graphics file. You can use the variables
res_x, res_y, width, height, checksum and file_size.
ROW_BEGIN=[<s>]
This code sequence is written at the beginning of each row of
data. Graphics data will follow immediately. The width of the
row (pixels) is available in the `pixels' variable. Usually
empty.
ROW_END=[<s>]
This code sequence is written immediately after each row of data.
Usually empty.
TRAILER=[<s>]
This code sequence is written at the end of the graphics file.
You can use the variables res_x, res_y, width, height and
checksum.
3.2 Code sequences
------------------
These sequences usually consist of several commands which are
separated by spaces. Each command can be constructed from the
following tokens:
ASCII control codes and other names
These commands insert one byte:
NUL Code 00(hex) 0(dec).
SOH Code 01(hex) 1(dec).
STX Code 02(hex) 2(dec).
ETX Code 03(hex) 3(dec).
EOT Code 04(hex) 4(dec).
ENQ Code 05(hex) 5(dec).
ACK Code 06(hex) 6(dec).
BEL Code 07(hex) 7(dec).
BS Code 08(hex) 8(dec).
TAB Code 09(hex) 9(dec).
HT Code 09(hex) 9(dec).
LF Code 0A(hex) 10(dec).
VT Code 0B(hex) 11(dec).
FF Code 0C(hex) 12(dec).
CR Code 0D(hex) 13(dec).
SO Code 0E(hex) 14(dec).
SI Code 0F(hex) 15(dec).
DLE Code 10(hex) 16(dec).
DC1 Code 11(hex) 17(dec).
DC2 Code 12(hex) 18(dec).
DC3 Code 13(hex) 19(dec).
DC4 Code 14(hex) 20(dec).
NAK Code 15(hex) 21(dec).
SYN Code 16(hex) 22(dec).
ETB Code 17(hex) 23(dec).
CAN Code 18(hex) 24(dec).
EM Code 19(hex) 25(dec).
SUB Code 1A(hex) 26(dec).
ESC Code 1B(hex) 27(dec).
FS Code 1C(hex) 28(dec).
GS Code 1D(hex) 29(dec).
RS Code 1E(hex) 30(dec).
US Code 1F(hex) 31(dec).
DEL Code 7F(hex) 127(dec).
ASCII printing characters
These commands insert one or more bytes:
'x A single character: the character following the single
quote ' is sent as is.
"xxx" A string of characters: the characters following the
double quote " up to, but not including, the next " in the
same line are sent to the printer.
Numbers standing for a character's ASCII code
These commands insert one byte:
0### Octal number: # is a digit from 0 to 7.
0x## Hexadecimal number: # is a character from the set (0-9,
A-F).
### Decimal number: # is a digit from 0 to 9. Note: a leading
zero will cause the number to be interpreted as octal (see
0###).
Control characters
This command insert one byte:
^A Control characters: ^a to ^a or ^A to ^Z stand for codes 1
to 26, ^@ stands for 0.
Repeating
This command performs a fixed number of repetitions of the immedi-
ately following command:
REP# Repeat the following command # times (1 to 256). If there
are multiple successive REP commands, only the last one
will be obeyed.
Inserting a parameter
These commands evaluate an expression and insert the result as
byte, 16-bit word or 32-bit word:
DEC# <expression>
Insert the value as decimal number (in characters) with
leading zeros, filled to # (1 to 9) places.
BYTE <expression>
Insert the lower 8 bits of the value as byte.
WORD_LH <expression>
Insert the lower 16 bits of the value using two bytes. The
least significant byte is inserted first.
WORD_HL <expression>
Insert the lower 16 bits of the value using two bytes. The
most significant byte is inserted first.
LONG_LH <expression>
Insert the value using four bytes. The least significant byte
is inserted first.
LONG_HL <expression>
Insert the value using four bytes. The most significant byte
is inserted first.
The value of an <expression> is computed using 32-bit arithmetic.
An expression can be built as shown here (the parentheses are
required!):
<decimal number>
decimal number (0 to 2147483647)
<hexadecimal number>
hexadecimal number (0x0 to 0xffffffff)
<variable>
see below
( <expression> )
redundant parentheses
- <expression>
change sign
~ <expression>
bitwise NOT
( <expression> + <expression> )
addition
( <expression> - <expression> )
subtraction
( <expression> * <expression> )
multiplication
( <expression> / <expression> )
quotient
( <expression> % <expression> )
remainder
( <expression> & <expression> )
bitwise AND
( <expression> | <expression> )
bitwise OR
( <expression> ^ <expression> )
bitwise XOR
( <expression> << <expression> )
shift left (1 << 3 yields 8)
( <expression> >> <expression> )
shift right (10 >> 1 yields 5)
( <expression> < <expression> )
comparison: if less than, 0 otherwise
( <expression> = <expression> )
comparison: 1 if equal, 0 otherwise
Parentheses can only be omitted for successive operators of the
SAME type, the operators will be evaluated from left to right.
Parentheses cannot be omitted for `<<', `>>', `<' and `='. For in-
stance,
(((1+2)+3)+4)
can be abbreviated to
(1+2+3+4)
On the other hand, no parentheses can be omitted in ((3*2)+1).
A <variable> is one of the following:
res_x
horizontal resolution (DPI, +resolution-x)
res_y
vertical resolution (DPI, +resolution-y)
width
sheet width (pixels, +width)
height
sheet height (pixels, +height)
one_lf
the value set with ONE_LINE_FEED=
blank
the value set with BLANK_WIDTH=
max_lf
the value set with MAX_LF=
pixels
the width of the current row of the bitmap
line_feed
the amount of line feed
form_feed
the amount of form feed
pos_x
horizontal position for POS_X=
checksum
checksum
value
used for computing the checksum
file_size
file length (only usable with HEADER=)
vmu
the value set with VMU=. If VMU= is not set or set to 0, the
vmu variable contains 1
Continuation line
If the last character of the line is a `\' preceded by a blank,
the next line (which must not be a comment line) will be a
continuation line. Using continuation lines, long code sequences
can be entered more conveniently. Each <expression> must be
entered completely on in line.
3.3 Examples of code sequences
------------------------------
240 DPI graphics mode for the EPSON FX-80:
ESC '* 3 WORD_LH pixels
In hexadecimal this is: 1B 2A 03 <n1> <n2>, where <n1>+256*<n2> is the
width of the graphics in dots.
Line feed for NEC P6:
FS '3 BYTE line_feed LF
In hexadecimal this is: 1C 33 <n1> 0A. The paper will be moved by
<n1>/360 inch.
Horizontal positioning for a C.ITOH 8510A:
ESC 'F DEC4 pos_x
In hexadecimal this is: 1B 46 <n1> <n2> <n3> <n4>, where <n1> to
<n4> are numbers (30 to 39, hexadecimal) which give the horizontal
position.
A 24 pin graphics mode, specify number of bytes + 1 (width * 3 + 1):
ESC "[g" WORD_LH ((pixels*3)+1) 5
In hexadecimal this is (the parameter is assumed to be 100):
1B 5B 67 2D 01 05
^^^^^
301 = 3*100+1
Nonsense example:
^A "abc" TAB ' 010 10 0x10 " ' " REP2 "ab" 0
This is: 01 61 62 63 09 20 08 0A 10 20 27 20 61 62 61 62 00.
Example for continuation lines:
INIT1=CAN DC2 ESC '5 0 ESC 'F ESC 'H ESC 'I 0 ESC 'T ESC 'U 0 \
ESC 'X 1 255 ESC "[@" 4 0 0 0 17 1 ESC '_ 0 ESC '- 0 \
ESC "[\" 4 0 0 0 0x68 0x01 ESC '3 BYTE one_lf CR
4 Text file format for creating a binary file
=============================================
A text file can contain comment lines which begin with `*' or `%', all
the characters after that character are ignored. Blank lines are also
ignored.
All other lines contain code sequences which are written to the binary
file. The code sequences used for creating a binary file are a subset
of the code sequences used for generating a parameter file.
4.1 Code sequences
------------------
These sequences usually consist of several commands which are
separated by spaces. Each command can be constructed from the
following tokens:
ASCII control codes and other names
These commands insert one byte:
NUL Code 00(hex) 0(dec).
SOH Code 01(hex) 1(dec).
STX Code 02(hex) 2(dec).
ETX Code 03(hex) 3(dec).
EOT Code 04(hex) 4(dec).
ENQ Code 05(hex) 5(dec).
ACK Code 06(hex) 6(dec).
BEL Code 07(hex) 7(dec).
BS Code 08(hex) 8(dec).
TAB Code 09(hex) 9(dec).
HT Code 09(hex) 9(dec).
LF Code 0A(hex) 10(dec).
VT Code 0B(hex) 11(dec).
FF Code 0C(hex) 12(dec).
CR Code 0D(hex) 13(dec).
SO Code 0E(hex) 14(dec).
SI Code 0F(hex) 15(dec).
DLE Code 10(hex) 16(dec).
DC1 Code 11(hex) 17(dec).
DC2 Code 12(hex) 18(dec).
DC3 Code 13(hex) 19(dec).
DC4 Code 14(hex) 20(dec).
NAK Code 15(hex) 21(dec).
SYN Code 16(hex) 22(dec).
ETB Code 17(hex) 23(dec).
CAN Code 18(hex) 24(dec).
EM Code 19(hex) 25(dec).
SUB Code 1A(hex) 26(dec).
ESC Code 1B(hex) 27(dec).
FS Code 1C(hex) 28(dec).
GS Code 1D(hex) 29(dec).
RS Code 1E(hex) 30(dec).
US Code 1F(hex) 31(dec).
DEL Code 7F(hex) 127(dec).
ASCII printing characters
These commands insert one or more bytes:
'x A single character: the character following the single
quote ' is sent as is.
"xxx" A string of characters: the characters following the
double quote " up to, but not including, the next " in the
same line are sent to the printer.
Numbers standing for a character's ASCII code
These commands insert one byte:
0### Octal number: # is a digit from 0 to 7.
0x## Hexadecimal number: # is a character from the set (0-9,
A-F).
### Decimal number: # is a digit from 0 to 9. Note: a leading
zero will cause the number to be interpreted as octal (see
0###).
Control characters
This command insert one byte:
^A Control characters: ^a to ^a or ^A to ^Z stand for codes 1
to 26, ^@ stands for 0.
5 Notes
=======
Some of the settings can also be made through command line options
of dvidot, this way is recommended. Each printer (and printer mode)
should have its own parameter file. Parameter file settings which can
be changed on the dvidot command line should be given values which are
reasonable but not expected to cover all cases, as the right value can
easily be put on the command line or in the configuration file.
Please do not change the parameter files supplied -- if you must
change them, copy them to a file with a different name first.
When you have developed (and thoroughly tested) a set of parameters
for a new printer or mode, please send them to the author (address in
the readme.eng file), so that others can profit from it and so that a
standard is upheld.
If you cannot create a parameter file for a printer using the methods
above, please get in touch with the author so that makedot and dvidot
can be extended to cover this new case.
6 Appendix: Old method for inserting parameters in a code sequence
==================================================================
If you need to read an old parameter file: here's the old method for
inserting parameters in code sequences. When converting old DOT files
to new ones, the code sequences will be automatically converted,
therefore you don't have to read this.
The following commands are used for inserting a numeric parameter in a
code sequence (see below for xx):
xx+#
Add # to parameter before inserting parameter
xx-#
Subtract # from parameter before inserting parameter
xx*#+#
Multiply parameter by the first number and add the second number
before inserting parameter
xx*#-#
Multiply parameter by the first number and add the second number
before inserting parameter
You cannot use xx alone, use xx+0 instead. Choose xx from the
following:
D1 to D9
The parameter is inserted as a decimal number (in characters)
with leading zeros (D1: filled to one place, D9: filled to nine
places).
L
The low byte of the parameter is inserted as a binary number.
H
The high byte of the parameter is inserted as a binary number.
LH
The parameter is inserted as a binary number in two bytes (the low
byte first then the high byte).
HL
The parameter is inserted as a binary number in two bytes (the
high byte first then the low byte).
The parameter depends on the context:
INIT1 one_line_feed
INIT2 one_line_feed
GRAPH_MODE
pixels
LINE_FEED
line_feed
POS_X pos_x
7 History
=========
Version 1.0a (21-Feb-1990):
---------------------------
First version
Version 1.1a (22-Mar-1990):
---------------------------
- New keyword: VF_PATH
- METHOD=n1 n2: New range for n1 and n2: 1 to 6
Version 1.1b (22-Jun-1990):
---------------------------
- xx*#+# and xx*#-#
Version 1.1c (22-Sep-1990):
---------------------------
- Bug fixed (`makedot -d' output of LH+n and HL+n with non-zero n)
- Bug fixed (`makedot -d' output of BLANK_WIDTH=<empty>)
Version 1.1d (18-Nov-1991):
---------------------------
*** DOT file format changed -- old files must be converted
*** New syntax for inserting parameters into code sequences
- The description of LINE_FEED and ONE_LINE_FEED was wrong
- GRAPH_END has been ignored
- Declarations need not to be given in the order listed in this
documentation
- Lines beginning with `%' are comment lines
- Continuation lines.
- Bug fixed: output of octal numbers was wrong (-d switch)
- Bug fixed: output of control characters was wrong (-d switch)
- REP###
- No fixed limit for the length of code sequences
- TYPE=BITMAP for creating graphics files
- Command line options: -r and -o
- Double-sided printing
- METHOD=8 n2
Version 1.1e (19-Dec-1991):
---------------------------
- -a and -b commands
Version 1.1f (17-Oct-1993):
---------------------------
- DOUBLE_SIDED replaced with DOUBLE_SIDED_LONG and DOUBLE_SIDED_SHORT
Version 1.2a (09-Apr-1994):
---------------------------
- Support long filenames under OS/2 (HPFS)
- Add VMU keyword
- Documentation is now available as OS/2 online book
Version 1.2b (21-Jun-1994):
---------------------------
- Accept VMU=0
Version 1.2c (04-Aug-1994):
---------------------------
- TYPE=DOT_HORZ for printers with bits horizontally arranged
- Add POS_Y keyword
Version 1.2d (01-Sep-1994):
---------------------------
- makedot 1.2c could not process old DOT files (created by makedot 1.2b or
lower) with -d
-------- End of MAKEDOT.DOC -------------